package com.bootdo.hjh.pay;

import org.springframework.stereotype.Component;

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;

@Component("alipayService")
public class AlipayService {
	
	public static AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl,
			AlipayConfig.app_id, 
			AlipayConfig.merchant_private_key,
			"json", 
			AlipayConfig.charset, 
			AlipayConfig.alipay_public_key,
			AlipayConfig.sign_type);
	
	
	public String pay(String orderNo,String amount,String orderTitle,String desc,String returnUrl) {
		
		//获得初始化的AlipayClient
		
		
		//设置请求参数
		AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
		if(null != returnUrl) {
			alipayRequest.setReturnUrl(returnUrl);
		}else {
			alipayRequest.setReturnUrl(AlipayConfig.return_url);
		}
		
		alipayRequest.setNotifyUrl(AlipayConfig.notify_url);
		
		alipayRequest.setBizContent("{\"out_trade_no\":\""+ orderNo +"\"," 
				+ "\"total_amount\":\""+ amount +"\"," 
				+ "\"subject\":\""+ orderTitle +"\"," 
				+ "\"body\":\""+ desc +"\"," 
				+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
		
		//若想给BizContent增加其他可选请求参数，以增加自定义超时时间参数timeout_express来举例说明
		//alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\"," 
		//		+ "\"total_amount\":\""+ total_amount +"\"," 
		//		+ "\"subject\":\""+ subject +"\"," 
		//		+ "\"body\":\""+ body +"\"," 
		//		+ "\"timeout_express\":\"10m\"," 
		//		+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
		//请求参数可查阅【电脑网站支付的API文档-alipay.trade.page.pay-请求参数】章节
		//请求
		String result = null;
		try {
			result = alipayClient.pageExecute(alipayRequest).getBody();
		} catch (AlipayApiException e) {
			e.printStackTrace();
		}
		return result;
	}

}
